#include "lightcontroller.h"

LightController::LightController(QObject *parent, SerialPortHandler *SerialPort_4, SerialPosrtHandler *Serialport_2)
    : QObject(parent)
    , m_serialPort_4(SerialPort_4)
    , m_serialPort_2(Serialport_2)
{
    init(channels);

    connect(m_topLight_A, Light::valueChanged, [=](const QString &sData){
        m_serialPort_4.sendData(sData);// 发送数据到串口
    });
    connect(m_topLight_B, Light::valueChanged, [=](const QString &sData){)
        m_serialPort_4.sendData(sData);// 发送数据到串口
    });
    connect(m_sideLight_C, Light::valueChanged, [=](const QString &sData){
        m_serialPort_4.sendData(sData);// 发送数据到串口
    });
    connect(m_sideLight_D, Light::valueChanged, [=](const QString &sData){
        m_serialPort_4.sendData(sData);// 发送数据到串口
    });

    connect(m_sideFillLight_B, Light::valueChanged, [=](const QString &sData){
        m_serialPort_2.sendData(sData);// 发送数据到串口
    });
    connect(m_bottomLight_A, Light::valueChanged, [=](const QString &sData){
        m_serialPort_2.sendData(sData);// 发送数据到串口
    });
}

~LightController()
{

}

void init(Channels channels)
{
    
}

void close()
{

}

// 设置亮度函数，用于设置单个或多个通道的亮度
void setBrightness(const QString &face, uint8_t value)
{
    if(face == "all")
    {
        // 全灯通道设置亮度
        m_topLight_A.setValue(value);
        m_topLight_B.setValue(value);
        m_sideLight_C.setValue(value);
        m_sideLight_D.setValue(value);
        m_sideFillLight_B.setValue(value);
        m_bottomLight_A.setValue(value);
    } else if(face == "top"){
        // 上侧灯通道设置亮度
        m_topLight_A.setValue(value);
        m_topLight_B.setValue(value);
    } else if(face == "sdie"){
        // 右侧灯通道设置亮度
        m_sideLight_C.setValue(value);
        m_sideLight_D.setValue(value);
    } else if(face == "fill") {
        // 侧填充灯通道设置亮度
        m_sideFillLight_B.setValue(value);
    } else if(face == "bottom"){
        // 下侧灯通道设置亮度
        m_bottomLight_A.setValue(value);
    }
}

// 读取亮度函数，用于读取单个或多个通道的亮度
uint8_t getBrightness(const QString &face, Channels channels)
{
    if(face == "top"){
        // 上侧灯通道读取亮度
        return m_topLight_A.value();
    } else if(face == "sdie"){
        // 右侧灯通道读取亮度
        return m_sideLight_C.value();
    } else if(face == "fill") {
        // 侧填充灯通道读取亮度
        return m_sideFillLight_B.value();
    } else if(face == "bottom"){
        // 下侧灯通道读取亮度
        return m_bottomLight_A.value();
    }
    return 0;
